Implementing and verifying release-acquire transactional memory in C11

نویسندگان

چکیده

Transactional memory (TM) is an intensively studied synchronisation paradigm with many proposed implementations in software and hardware, combinations thereof. However, TM under relaxed memory, e.g., C11 (the 2011 C/C++ standard) still poorly understood, lacking rigorous foundations that support verifiable implementations. This paper addresses this gap by developing TMS2-ra, a operational specification. We integrate TMS2-ra RC11 repaired model disallows load-buffering) to provide formal semantics for libraries their clients. develop logic, TARO, verifying client programs use synchronisation. also show how can be implemented library, TML-ra, uses release-acquire atomics, yet guarantees the properties required TMS2-ra. benchmark TML-ra it outperforms its sequentially consistent counterpart STAMP benchmarks. Finally, we simulation-based verification technique prove correctness of TML-ra. Our entire development supported Isabelle/HOL proof assistant.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Implementing Software Transactional Memory, Correctly

In recent years there has been much interest in the idea of concurrent programming using transactional memory, for example as provided in STM Haskell. While programmers are provided with a simple high-level model of transactions in terms of a stop-the-world semantics, the low-level implementation is rather more complex, involving subtle techniques that allow multiple transactions to execute con...

متن کامل

Compiling concurrency correctly : verifying software transactional memory

Concurrent programming is notoriously difficult, but with multi-core processors becoming the norm, is now a reality that every programmer must face. Concurrency has traditionally been managed using low-level mutual exclusion locks, which are error-prone and do not naturally support the compositional style of programming that is becoming indispensable for today’s large-scale software projects. A...

متن کامل

A Framework for Formally Verifying Software Transactional Memory Algorithms

We present a framework for verifying transactional memory (TM) algorithms. Specifications and algorithms are specified using I/O automata, enabling hierarchical proofs that the algorithms implement the specifications. We have used this framework to develop what we believe is the first fully formal machine-checked verification of a practical TM algorithm: the NOrec algorithm of Dalessandro, Spea...

متن کامل

A Compositional Method for Verifying Software Transactional Memory Implementations

We present a compositional method for verifying software transactional memory (STM) implementations and its application to the Bartok STM. The method consists of two parts. The first is a generic, manual proof of serializability at the algorithm level for lazy-invalidate, write-in-place STM’s. The proof relies on three properties of program executions that the STM must ensure. The second part c...

متن کامل

Formalizing and Verifying Transactional Memories

Transactional memory (TM) has shown potential to simplify the task of writing concurrent programs. TM shifts the burden of managing concurrency from the programmer to the TM algorithm. The correctness of TM algorithms is generally proved manually. The goal of this thesis is to provide the mathematical and software tools to automatically verify TM algorithms under realistic memory models. Our fi...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

ژورنال

عنوان ژورنال: Proceedings of the ACM on programming languages

سال: 2022

ISSN: ['2475-1421']

DOI: https://doi.org/10.1145/3563352